2016/08/22

深度學習為什麼會這麼厲害?Yann LeCun 提供的三個觀點


深度學習 (deep learning) 大概是這幾年機器學習領域在應用上大放異彩的主要關鍵之一,從影像、語音到各種資料型態的辨識和分類,藉由深度學習帶來的技術突破,讓電腦達到了接近人類,甚至超越人類的水平。

但是,為什麼深度學習這麼厲害? 目前雖然還沒有完整的解釋,但是 KDNugget 的一篇 "3 Thoughts on Why Deep Learning Works So Well",摘錄了 Yann LeCun (Convolutionl Neural Network 的主要貢獻者之一) 的一些對談,提供了一些可能的思考方向。

七月底,Yann LeCun 在知識網站 Quora 上舉辦了一場線上問答,其中一個問題是「我們什麼時候可以看到深度學習的理論和數學基礎?」(When will we see a theoretical background and mathematical foundation for deep learning?)。

Yann LeCun 的回覆裡有幾個洞見,非常有參考價值:

  • 在高維度的空間裡,不容易發生局部最佳值 (local minima) 的狀況
  • 多層次的數學結構,可以更扼要地描述複雜的函數
  • ConvNets 對「特定的資料型態」很有效


局部最佳值是在做「數學最佳化」時常常遇見的問題,而大多數機器學習演算法都包含這個步驟,因此也就繼承了同樣的難題,通常需要反覆的調整參數才能克服。深度學習的演算法包含了非常大量的變數,等於是在一個非常高維度的空間裡做最佳化,也因而提供了一個跳脫局部最佳值的途徑。

而 Convolutionl Neural Network 作為深度學習演算法的其中一個分支,在影像辨識,或者更廣義的說,「空間信號」(spatial signals) 上,有比其他型態資料更好的表現,某種程度上也反映出在描述特定資料型態時,有其較適合的數學模型的事實。關於這一點更詳細的解釋,可以在 "Invariant scattering convolution networks" 這篇論文裡找到。


同一個 Quora 問答集裡的另一個問題,聊到深度學習最近值得注意的新發展,Yann LeCun 提到 GAN (Generative Adversarial Networks) 的發展,這跟我過去做過一段時間的 co-evolutionary algorithm 其實是很相近的概念,不過這個話題應該要另外寫一篇了。




2016/08/11

資料可以說成怎樣的故事?


「說故事」對任何人來說都是相當重要的能力,對一個資料科學家來說尤其如此。

一般來說,資料分析的專家(好像現在都叫資料科學家了)在商業場合大多是扮演「決策輔助」的角色,需要把資料分析的結果,包裝成其他人(尤其是決策者)看得懂的東西,說服他們「根據資料,有幾種可行的建議,各自有怎樣的成功率以及風險」。「說服」很重要的是對聽眾的理解,包含人性的理解和商業邏輯的理解,以純粹技術背景出身的人來說,大概會是比較吃力的一環。

哈佛商業評論除了宣稱「資料科學家是21世紀最性感的職業」之外,也有不少「如何用資料說故事」的文章。Thomas Davenport 在 2014 年的一篇「10種用資料說故事的方法」裡,建議可以從四個面向來看資料可以說的故事:
  • 時間:是對過去歷史的回顧,對現在市場狀況的調查,還是對未來的預測
  • 焦點:想表達的重點屬於「是什麼」、「為什麼」還是「怎麼辦」。
  • 深度:短期的處理資料問題,或是長期深入的探索新發現。
  • 方法:相關或是因果

當然,這些不同的方法通常都是混合使用的,Jim Stikeleather 在更早的一篇「如何用資料說故事」裡,有以下五項建議:
  1. 找一個吸引人的敘述方式
  2. 瞭解你的聽眾
  3. 客觀而且平衡
  4. 不要主動過濾資料
  5. 修改,修改,再修改

如同最前面說的,個人覺得其中的第二項應該是最需要花功夫的,然而言歸正傳,一旦瞭解了聽眾的背景與需求,其實就可以按照 Thomas Davenpor 提供的四大面向,組合出「吸引人的敘述方式」。
但是,我覺得在實務上,如果你對你的聽眾太過瞭解,彼此又有利害關係的時候,好像第三、第四項反而變得難以堅持了 XD。


[參考資料]

2016/08/07

[Data Analytics] 評估資料模型的常用方法




資料科學的工作,有一部份是用資料建立數學模型,然後用建立好的模型來對未來作預測。然而一個數學模型到底建得好不好,應該要怎麼評估呢?Laetitia Van Cauwenberge 的這篇 "11 Important Model Evaluation Techniques Everyone Should Know" 是不錯的簡介,以下是她所提到的 11 個方法,我稍微調整了一下順序:
  1. Root Mean Square Error (RSME).
  2. L^1 version of RSME.   
  3. Confidence Interval.
  4. Kolmogorov-Smirnov Chart
  5. Chi Square
  6. ROC curve
  7. Gini Coefficient.  
  8. Confusion Matrix.
  9. Gain and Lift Chart.
  10. Cross Validation
  11. Predictive Powe
這11個項目涵蓋了統計學(statistics)、資料探勘(data mining)和機器學習(machine learning)領域絕大多數「評估」的方法,原文對各項的介紹相當清楚,但嚴格說來這些方法屬於幾種不同層次的概念,彼此之間倒也不是互相獨立,而是可以混搭使用的。我從個人的觀點簡單的摘要一下。

從概念的複雜度來看,Root Mean Square ErrorL^1 version of RSME 屬於最基本的數值型指標,用來表示兩組數據之間的差異性,如果這兩組數值是「模型的預測」和「標準答案」,這類數值指標就可以很直觀的表示「這個模型有多好」。而 L^1 version of RSME 屬於比較新的概念,基本上是修改 Root Mean Square Error 以使其更適合非數值的資料型態。

ROC curveConfusion Matrix 屬於上述數值型指標的特殊呈現方式。RSME 描述的是兩組數據的差異,但是當這兩組數據是二元資料(0 或1)或類別資料(0, 1, 2, ...N)時,就常常會用 ROC Curve 或 Confusion Matrix 來表示。這樣的呈現方式讓我們可以很快的看出模型在預測上的表現,並根據決策者的風險偏好來選擇適合的模型。而 Gini CoefficientROC curve 的延伸指標,把一張圖的主要特徵轉換成一個簡單的數字。

在一般統計課程的「推論統計」部分,應該都會學到 Confidence IntervalChi Square,和 Kolmogorov-Smirnov Test 等概念。由於導入了「機率分布」的概念,這些方法比基本數值稍微複雜一些,但可以提供類似「我對這個模型有 xx% 的信心」這樣的參考,所以在決策或風險管理的過程中,比簡單的數值更有意義一些。

Gain and Lift 是從行銷和資料探勘領域提出的概念,用「投入資源得到的效益」來評估一個模型的預測能力,據以決定行銷活動的規模。這個方法在其他領域的應用比較少見。

Cross Validation 則是更抽象一層的概念。無論你用前面敘述的哪一種方法來評估一個模型,都會面臨一個問題:「我的評估有多可靠?」一般的模型評估,我們會把手上的資料分成「訓練組」(training data)和「測試組」(testing data),用前者來建立模型,然後用後者來評估模型的表現。然而,我們切分資料的方法,是不是讓切分的資料像的外面真實世界一樣,還是變得有所偏頗?這是很難回答的問題,Cross Validation 則提供了至少在數學上合理的方式:把整組資料反覆切分若干次,然後把每次的表現指標整合起來看,以防止資料切分造成的偏頗。類似的 resampling 方法還有很多,例如 bootstraping

最後一項 Predictive Power,是資料科學的主要推手之一,Vincent Granville 前幾年提出來的方法,主要是在大數據的環境下實作快速 feature selection 的方法。Feature selection 是資料科學裡蠻重要的一環:我們有很多的資料、很多的變項,然而什麼樣的組合,對預測我們關心的問題,是最有效的?這跟 Cross Validation 試圖回答的問題一樣抽象,很可能是沒有答案的,而學術上提出的方法很多,也很難證明哪一種是最好的。幸好站在實務的角度來看,能在有限的資源下能給我夠好的答案即可,而這個 Predictive Power 看來也是個務實的解決方案。

以我個人的實務經驗來說,最常用的評估方法是 10-fold cross-validation + confusion matrix,然後根據結果再進一步做 feature selection。當然這是由於我較常解決問題的形式屬於透過 classification 跟 clustering 來做決策,如果是做單純的數值預測,cross-validation + RSME 或許就已經是夠好的指標了。


2016/06/14

[Books] 從 0 到 1 的趣味小事:科技的發展會不會帶領我們到烏托邦?

買了好一陣子,最近終於把書看到最後一頁,這大概就是我讀書的常態吧。雖然高中的時候,把「如何閱讀一本書」紮紮實實的讀了兩遍,但是後續的具體實踐呢,大多是在懶散的面前原地踏步。

這本 Peter Thiel 談創業的很紅,在美國和台灣都算是暢銷書,所以不需要我再多介紹;而出版至今也有一年多的時間,很多名人大師都已經寫了讀書心得和深入分析(例如:鄭志凱周欽華孫憶明...等等),我不必再班門弄斧。

書裡講「團隊」的章節裡有一件小事,Peter Thiel 描述 PayPal 早期團隊的時候說:
我們比較喜歡頌揚資本主義的星際大戰(Star Wars),而不是頌揚共產主義的星際爭霸戰(Star Trek,也譯作「星艦迷航記」)。

作為 si-fi 愛好者,對這兩個虛構的世界當然不會太陌生,但我還真的沒有從這個角度去想過兩個科幻系列的差異。

誠然,星艦迷航記(我個人比較喜歡這個譯名)系列的世界觀,主要是設定在近未來的地球,在這個世界裡,人類結束了自身的貧窮、疾病和戰爭,並成立星際艦隊以探索宇宙。雖然系列電影大多是描寫衝突與鬥爭,對這個世界觀著墨甚少,但是在為數眾多的影集裡,倒是蠻生動的勾勒出這個「人不再需要擔心溫飽,只需要追求自我實現」的烏托邦。

反觀星際大戰的故事,是發生在「很久以前,一個非常遙遠的銀河系」,那裡的人做的事情和我們熟悉的現代人類社會一樣,有民主國家,也有集權國家,有士農工商,也有政治和種族問題。這個世界充滿了衝突,也到處是機會,人們為了求生存,常常需要鋌而走險,非常像是大航海時代,只是把大海換成了太空。

簡單的講,Star Trek 描述的是一個由科技進步帶來的大同世界,而 Star Wars 描述的是一個充滿未來科技但是生活還是和今天差不多的世界。那麼,科技不斷進步的今天,我們面對的未來,會是哪一種?


從今天的世界來看,全球化、知識經濟、人工智能的發展,不斷的擴大人與人之間的貧富與階級差異,我們似乎離「解決了貧窮、疾病和戰爭」還很遙遠;但是回頭來看,部分歐洲國家已經開始實驗「無條件基本所得」的概念(瑞士、荷蘭、芬蘭),所以似乎人類社會也不是全然沒有機會走向「只需要追求自我實現」的未來。

個人在歐洲生活過幾年,深深體認到歐洲國家的社會福利,其實是建立在相對深厚的公民素養上,才得以持續,因此,我倒不會盲目樂觀的認為「無條件基本所得」會變成人類社會的常態(君不見某些歐洲國家已經撐不下去,瀕臨破產)。相反的,今天的民主或非民主國家,更常見的是意識型態掛帥,操弄民粹,多數暴力,排外...

這麼說吧,如果現在世界人口只有10億,那麼我會樂觀得多;但事實是地球已經有太多的人口,即便我們不願意悲觀看待未來,也必須承認在可預見的未來,人類的命運是充滿挑戰的。

或許正如 Peter Thiel 在書的第六章所說的,現在是「樂觀而不確定的世界」。


2016/02/24

[Books] The Master Algorithm 機器學習的五大門派

這篇主要是簡短的介紹一本書:The Master Algorithm,作者 Pedro Domingos 是 University of Washington 的教授,這本書算是「完全不用數學公式的機器學習導論」(machine learning without equations),對於既不想碰數學又想了解機器學習在做什麼的人來說,算是不可多得的讀物。

會接觸到這本書,是之前收到 Domingos 教授在 ACM 的演講通知 "The Five Tribes of Machine Learning",聽了之後覺得還蠻不錯的,讓我對整個領域有更宏觀的理解,就買了書來看。

書中描述的「機器學習五大門派」分別是:

  • Symbolists (例如決策樹 decision tree)
  • Connectionists (例如類神經網路 neural networks)
  • Evolutionaries (例如遺傳演算法 genetic algorithm)
  • Bayesians (例如 naive Bayes 或推論網路)
  • Analogizers (例如 SVM)

演講跟書裡對五大門派都有更詳細的說明,這裡就不多做贅述。Domingos 教授的書,主要是倡言這個領域的發展,在未來會出現統合這五大門派的武林盟主,也就是 Master Algorithm,可以解決大多數(如果不是所有的)問題。

我個人還不敢自稱是這個領域的「專家」,但是以熟悉數個門派的方法,以及歷年來處理多種形態資料的實務經驗來說,我覺得這件事情不是可能,但恐怕也沒那麼容易。抽象理論上或許可能會有一個「架構」來整合整個機器學習應用的流程,但是在應用端就很難有統一的作法:至少行動裝置和資料中心,就很難用同樣的計算架構做同一件事情。

無論如何,這本書是機器學習領域值得一讀的書,不知道會不會有中文版?


2016/01/04

一甲子的等待:從類神經網路到深度學習

深度學習」(Deep Learning)大概是這兩年最熱門的技術話題之一,日前參加中研院舉辦的 Deep Learning Workshop莊炳煌院士在他的專題演講裡提出一個令人深思的問題:目前廣受討論的「深度學習」,其實指的是「深層類神經網路」(deep neural network),而今天的深層神經網路,跟50多年前聯結論學者提出的類神經網路,在理論架構上並沒有太大的不同,那麼,究竟是什麼原因讓我們等了將近60年?

從歷史的觀點來看,與60年前相比,我們現在有的是「強大的計算能力」和「近乎無窮無盡的資料」,而最近幾年 deep learning 領域的發展,的確有很大的部份是建立在這些基礎之上的。最早的類神經網路理論,從「輸入」到「輸出」,其實並沒有限定中間要有多少「層」,實際上是計算上的技術限制,讓過去50多年類神經網路的應用一直受限在 1~3 層;直到最近10年,才有新的計算架構出現,讓類神經網路從小於5層進展到10層、20層,直到2015年影像辨識大賽冠軍的200多層。

所以,我們等了60年的突破,就只是為了在技術上讓類神經網路能夠疊更多層嗎?

其實莊院士並不是唯一提出這個疑問的人。Vladimir Vapnik(統計學習領域的知名學者,SVM 的發明人之一),2015 年在柏林舉辦的研討會,Yandex School of Data Analysis Conference, Machine Learning: Prospects and Applications 裡提問到:「深度學習是否是來自魔鬼的禮物?」(Does Deep Learning Come from the Devil?

Vapnik 認為「要怎麼區分一個點子是來自於上帝還是來自於魔鬼?上帝是聰明的,而魔鬼不是。」(God is clever, while the devil is not.)而現階段的 deep neural network,很大的程度還是仰賴「大量的計算」和「大量的資料」,這種屬於「暴力法」(brute force)的取向。所以,我們還有很多努力的空間。

這些宗師級學者對 deep learning 的評價,並不是對這個領域的攻擊,而是對一個更根本的問題的反思:「在這個發展過程中,人類的具體貢獻是什麼?」(到了宗師級別,思考的通常是最根本的問題:數學)

誠然,讓類神經網路的運算架構可以到達很多層,在工程上的確是個挑戰,但是這些進展是不是能讓我們對 statistical learning 本身有更深的理解?(也就是說,我們是不是更清楚的知道,怎樣的數學架構下,機器學習可以做得更好?前面提過,deep neural network 跟 1957 年提出的 perceptron 在數學架構上沒有太大的區別。)

莊院士覺得,所謂的「深度學習」不應該只侷限在 deep neural network 上,而應該進一步拓展到「流形」(manifold)的學習(manifold learning),讓機器學習除了能從資料做「預測」之外,還可以從資料做「解釋」。

當然,這是人工智能的終極目標之一,一旦達成,現今大部分的專家也都要失業了。所以,多等個幾年,好像也不算是壞事吧?